home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 03 / 8 / DISK0381.ZIP / BRENTBAS.UM < prev    next >
Text File  |  1985-02-09  |  23KB  |  1,387 lines

  1.  
  2.  
  3.                         The Brentbas User's Manual                    
  4.  
  5.  
  6.      Licence:  You may use this document and the Brentbas program free
  7.      for a period of sixty days. If you wish to use the program  after
  8.      that time, you must send a $10 registration fee to
  9.  
  10.                   Brent D. Weaver
  11.                   1950 Oak View Drive
  12.                   Oakland, California  94602
  13.  
  14.  
  15.      Registered  users  may  make  copies  of  this  document  and the
  16.      Brentbas program provided  that  any  additional  users  of  this
  17.      document  and  the  Brentbas program abide by this licence agree-
  18.      ment.
  19.  
  20.      Brentbas is a trademark of Brent D. Weaver.
  21.  
  22.      Microsoft is a trademark of Microsoft Corporation.
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.      Copyright 1985 By Brent D. Weaver                           Page 1
  65.  
  66.  
  67.  
  68.  
  69.                         The Brentbas User's Manual                    
  70.  
  71.  
  72.                              1.  Introduction
  73.  
  74.  
  75.      Brentbas is an translator from a structured  BASIC  to  Microsoft
  76.      BASIC.  The  syntax  of the structured BASIC is a superset of the
  77.      RatBas language developed by W.F.  Sharpe  and  myself  at  Wells
  78.      Fargo  Investment Advisors. This text should be used as an update
  79.      of the RATBAS.UM user's manual.
  80.  
  81.  
  82.      This new translator has the following new features:
  83.  
  84.       1. It is capable of  translating  over  1500  lines  per  minute
  85.          without using a RAM disk.
  86.  
  87.       2. DOS 2.0 Path Names can be used for "include" files.
  88.  
  89.       3. Input,  Output,  Map  files, and Options can be read from the
  90.          command line.
  91.  
  92.       4. Cross-reference of procedure calls.
  93.  
  94.       5. Nesting of "include" files.
  95.  
  96.       6. DO...BREAK...ENDDO and DO...CONTINUE...ENDDO structures.
  97.  
  98.       7. GOTO(label) and RESUME(label) options for error processing.
  99.  
  100.       8. Compressed Code option (/X) and commented code option (/V).
  101.  
  102.       9. Provision for multiple-line statement and commenting.
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.      Copyright 1985 By Brent D. Weaver                           Page 2
  131.  
  132.  
  133.  
  134.  
  135.                         The Brentbas User's Manual                    
  136.  
  137.  
  138.                         2.  Running the Translator
  139.  
  140.      The syntax of running the translator  is  patterned  on  the  IBM
  141.      Basic Compiler.
  142.  
  143.            Brentbas [filespec][options],[filespec],[filespec]
  144.  
  145.      The  file  specification  may  contain  a disk drive, a directory
  146.      path, a "root" name, and an extension. To make clear how  default
  147.      path  names  are handled, the examples will be displayed assuming
  148.      the following command has been executed in the autoexec.bat file:
  149.  
  150.         c> prompt $p$n
  151.  
  152.      The three file specifications are for the input file, the  output
  153.      file and the map file respectively. For example:
  154.  
  155.  
  156.           (1) c\run> brentbas c:\source\myprog.rat,c:\run\myprog.bas,
  157.               c:\run\myprog.xmp
  158.  
  159.  
  160.      If the output file is omitted, the root name of the input file is
  161.      used  along  with the current directory and the ".BAS" extension.
  162.      For example:
  163.  
  164.           (2) c:\run> brentbas c:\source\myprog,,;
  165.  
  166.      achieves the same result as example (1). If you  do  not  want  a
  167.      listing file, you simple remove the commas:
  168.  
  169.           (3) c:run> brentbas c:\source\myprog;
  170.  
  171.      If  you  enter  no arguments, the program will prompt you for the
  172.      information.
  173.  
  174.      Options
  175.  
  176.      The following options are available:
  177.  
  178.  
  179.      /b        do not pause for errors.
  180.  
  181.      /n        remove unnecessary line numbers to improve optimization
  182.                for the BASIC compiler.
  183.  
  184.      /v        (verbose).  Adds  commenting  of  ifend's,  calls,  and
  185.                procedures.
  186.  
  187.      /x        Removes  all comments, extra spaces, and non-executable
  188.                lines. This option may be required if you are using the
  189.                /X option of the Basic compiler.
  190.  
  191.      /+        Do not process +  at  end  of  lines  as  concatenation
  192.                indicators.
  193.  
  194.  
  195.  
  196.      Copyright 1985 By Brent D. Weaver                           Page 3
  197.  
  198.  
  199.  
  200.  
  201.                         The Brentbas User's Manual                    
  202.  
  203.  
  204.      /i:path   default path for include files
  205.  
  206.  
  207.      One  should  not use /v and /x at the same time. For the /i: com-
  208.      mand, be sure to indicate both the disk drive and the  directory.
  209.      Further examples:
  210.  
  211.           (4) c:basic> brentbas myprog/n;
  212.  
  213.           (5) c:basic> brentbas myprog,myprog.tst/x/i:a:\,map
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.      Copyright 1985 By Brent D. Weaver                           Page 4
  263.  
  264.  
  265.  
  266.  
  267.                         The Brentbas User's Manual                    
  268.  
  269.  
  270.                             3.  "Do" Structure
  271.  
  272.  
  273.      The  DO  structure  is provided to add the "break" and "continue"
  274.      control structures found in the C language. There are  two  forms
  275.      of  the DO structure: the FOR and the WHILE. The first one trans-
  276.      lates to the BASIC FOR..NEXT construct. Its syntax is:
  277.  
  278.           FOR variable=expression to expression DO]
  279.               statement
  280.               statement
  281.           ENDDO
  282.  
  283.      For example:
  284.  
  285.            ' Skip count number of lines
  286.            FOR i=1 to count DO]
  287.               print
  288.            ENDDO]
  289.  
  290.      translates to
  291.  
  292.             100 FOR I=1 TO COUNT
  293.             105 PRINT
  294.             110 NEXT
  295.  
  296.      The second translates to the  BASIC  WHILE..WEND  structure.  For
  297.      example:
  298.  
  299.           ' Display File
  300.           WHILE not eof(1) DO]
  301.              line input #1, theline$
  302.              print line$
  303.           ENDDO]
  304.  
  305.      translates to:
  306.  
  307.           100 WHILE NOT EOF(1)
  308.           105 LINE INPUT #1, THELINE$
  309.           110 PRINT LINE$
  310.           115 WEND
  311.  
  312.      Now this may seem like a useless feature. However, if you use the
  313.      DO..ENDDO  structure,  the  Brentbas translator can check for im-
  314.      proper nesting of FOR..NEXT and WHILE..WEND loops with IF..IFEND,
  315.      CASE..CEND,  and  PROCEDURE..PEND  structures.  Additionally  the
  316.      "break" and "continue" structures are enabled.
  317.  
  318.      The  BREAK structure is used to prematurely exit from a FOR..NEXT
  319.      or WHILE..WEND loop. For example:
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.      Copyright 1985 By Brent D. Weaver                           Page 5
  329.  
  330.  
  331.  
  332.  
  333.                         The Brentbas User's Manual                    
  334.  
  335.  
  336.           ' Skip count number of lines unless at bottom of screen.
  337.           PROCEDURE Skip(count.skip)]
  338.           FOR i=1 to count.skip DO]
  339.              if csrlin>=24 BREAK]
  340.              print
  341.           ENDDO]
  342.           PEND]
  343.  
  344.      translates to:
  345.  
  346.           100 FOR I=1 TO COUNT.SKIP
  347.           105 IF CSRLIN>=24 GOTO 120
  348.           110 PRINT
  349.           115 NEXT
  350.           120 RETURN
  351.  
  352.      The. CONTINUE statement skips the remainder of the FOR..NEXT loop
  353.      or WHILE..WEND loop and goes to the next iteration. For example:
  354.  
  355.           ' Display File except comment lines
  356.           WHILE not eof(1) DO]
  357.              line input #1, theline$
  358.              if left$(theline$,1)="." CONTINUE]
  359.              print line$
  360.           ENDDO]
  361.  
  362.      translates to:
  363.  
  364.           100 WHILE NOT EOF(1)
  365.           105 LINE INPUT #1, THELINE$
  366.           110 IF LEFT$(THELINE$,1)="." GOTO 120
  367.           115 PRINT LINE$
  368.           120 WEND
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.      Copyright 1985 By Brent D. Weaver                           Page 6
  395.  
  396.  
  397.  
  398.  
  399.                         The Brentbas User's Manual                    
  400.  
  401.  
  402.                          4.  Initialization Blocks
  403.  
  404.  
  405.      When using INCLUDE files, you may need to dimension  and/or  ini-
  406.      tialize  certain  variables  used in the procedures in the proce-
  407.      dures in the include file. All blocks of the following  form  are
  408.      executed at the start of the program.
  409.  
  410.           INITIAL]
  411.              statement
  412.              statement
  413.           INITEND]
  414.  
  415.      You may have multiple INITIAL..INITEND blocks.
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.      Copyright 1985 By Brent D. Weaver                           Page 7
  461.  
  462.  
  463.  
  464.  
  465.                         The Brentbas User's Manual                    
  466.  
  467.  
  468.                              5.  GOTO feature
  469.  
  470.  
  471.      To  handle  multiple  error  trapping blocks, the GOTO and RESUME
  472.      feature is provided.
  473.  
  474.           LABEL OPENERR]
  475.              on error goto 0 'disable this error block
  476.              PRINT infile$;" cannot be opened.  Error #";err
  477.              Askyn("Do you wish to continue",ok)]
  478.              if ok RESUME(ASKNAME)]
  479.              RESUME(ENDOPEN)]
  480.           '
  481.           PROCEDURE OPENFILE]
  482.           LABEL ASKNAME]
  483.              on error goto(OPENERR)]
  484.              INPUT "Enter Name of File";infile$
  485.              OPEN infile$ for input as #1
  486.           LABEL ENDOPEN]
  487.           PEND]
  488.  
  489.      There are also rare  cases  where  the  GOTO..LABEL  contruct  is
  490.      preferred  to other control structures. This should be used spar-
  491.      ingly, if at all.
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.      Copyright 1985 By Brent D. Weaver                           Page 8
  527.  
  528.  
  529.  
  530.  
  531.                         The Brentbas User's Manual                    
  532.  
  533.  
  534.                  6.  Additional Features of Include Files
  535.  
  536.  
  537.      The INCLUDE instruction can now used path names.  If  path  names
  538.      are used, you must put the name in quote marks.
  539.  
  540.           INCLUDE "C:\FILETOOLS\OPEN"]
  541.  
  542.      The  default  path  can be changed by use of the /I: option. If a
  543.      drive letter is provided without a path name,  the  default  path
  544.      name  will  be  used  even if the default path is for a different
  545.      drive.
  546.  
  547.      Include Files can now be nested to a level of 3.
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.      Copyright 1985 By Brent D. Weaver                           Page 9
  593.  
  594.  
  595.  
  596.  
  597.                         The Brentbas User's Manual                    
  598.  
  599.  
  600.                         7.  I/O Routines and Memory
  601.  
  602.  
  603.      If DOS 2.0 is used with 196 KB or more of internal  memory,  spe-
  604.      cial  file buffering is used to greatly increase the speed of the
  605.      translator. A RAM disk is not necessary. If you are using  a  RAM
  606.      disk,  you should use it to hold the "include" files and possibly
  607.      the main input file. There is no need to put the output  file  on
  608.      the  RAM  disk  unless  you plan to immediately compile the BASIC
  609.      code.
  610.  
  611.      If DOS 1.1 is used or if there is less than 196 KB memory, stand-
  612.      ard i/o will be used without extra buffering.
  613.  
  614.      The buffering methods make it almost impossible  to  run  out  of
  615.      memory in the translation stage unless a program is so large that
  616.      BASIC would not be able to compile/interpret it anyway.
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.      Copyright 1985 By Brent D. Weaver                          Page 10
  659.  
  660.  
  661.  
  662.  
  663.                         The Brentbas User's Manual                    
  664.  
  665.  
  666.                           8.  Comment Statements
  667.  
  668.  
  669.      The  "/*"  symbol is used to indicate comments to the Translator.
  670.      This is useful in commenting out code. The apostrophe is used for
  671.      comments that you wish to include in the BASIC code.
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.      Copyright 1985 By Brent D. Weaver                          Page 11
  725.  
  726.  
  727.  
  728.  
  729.                         The Brentbas User's Manual                    
  730.  
  731.  
  732.                           9.  Line concatenation
  733.  
  734.  
  735.      You may concatenate two or more lines in your  source  code  into
  736.      one line of BASIC. The '+' symbol at the end of a line is used to
  737.      indicate  that  the next line is to be considered a continuation.
  738.      For example:
  739.  
  740.           IF (a>b) and +   /* Lower Bound of A
  741.              (a<c) +       /* Upper Bound of A
  742.           THEN]
  743.              print "Within Range"
  744.           ELSE]
  745.              print "Out of Range"
  746.           IFEND]
  747.           ' end of check
  748.  
  749.      translates to:
  750.  
  751.           100 IF (A>B) AND  (A<C) THEN ELSE GOTO 115
  752.           105    PRINT "Within Range"
  753.           110 GOTO 120
  754.           115    PRINT "Out of Range"
  755.           120 ' end of check
  756.  
  757.      The resulting BASIC line cannot exceed 255 characters.
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.      Copyright 1985 By Brent D. Weaver                          Page 12
  791.  
  792.  
  793.  
  794.  
  795.                         The Brentbas User's Manual                    
  796.  
  797.  
  798.                       10.  Procedure Cross Reference
  799.  
  800.  
  801.      In addition to the line numbers of each procedure, the translator
  802.      also produces the first and last lines  where  the  procedure  is
  803.      called.  If  these  numbers  are  zero, you may safely remove the
  804.      code. The Cross reference is  now  placed  in  a  separate  "XMP"
  805.      output file.
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.      Copyright 1985 By Brent D. Weaver                          Page 13
  857.  
  858.  
  859.  
  860.  
  861.                         The Brentbas User's Manual                    
  862.  
  863.  
  864.                        11.  Code compression option.
  865.  
  866.  
  867.      Code  compression  may  be desired if the resulting code is to be
  868.      interpreted or if the /X option is used with the compiler. The /X
  869.      option of the compiler places line numbers in the EXE  file.  For
  870.      large  programs,  this can lead to a "TOO COMPLEX" error message.
  871.      The /X option of the Brentbas translator  removes  all  comments,
  872.      extra  spaces,  and lines that do not contain code. The /X option
  873.      does not alter variable names.
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.      Copyright 1985 By Brent D. Weaver                          Page 14
  923.  
  924.  
  925.  
  926.  
  927.                         The Brentbas User's Manual                    
  928.  
  929.  
  930.       12.  Multiple Right Hand Side Variables in selection statements
  931.  
  932.  
  933.      The RATBAS.UM manual neglected to state the option that  multiple
  934.      right hand side variables could be placed in selection statements
  935.      if separated by commas. For example,
  936.  
  937.           CASE let$ OF]
  938.           "y","Y" :]
  939.               code=TRUE;
  940.           "n","N" :]
  941.               code=FALSE;
  942.           OTHERWISE]
  943.               print "Please answer Y or N"
  944.           CEND]
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.      Copyright 1985 By Brent D. Weaver                          Page 15
  989.  
  990.  
  991.  
  992.  
  993.                         The Brentbas User's Manual                    
  994.  
  995.  
  996.                         13.  Review of the Language
  997.  
  998.  
  999.      The  following  is  a  definition of the Brentbas language. Where
  1000.      more than one definition is allowed, each definition is  given  a
  1001.      number  if  parenthesis.  Where  a  line or part of a line is op-
  1002.      tional, it is enclosed  in  braces  ("{}").  The  closing  square
  1003.      bracket ("]") is a special symbol in the language.
  1004.  
  1005.           brentbas program:
  1006.                      multiple_blocks
  1007.                      program_line
  1008.                      multiple_blocks
  1009.  
  1010.           multiple_blocks:
  1011.                      init_or_proc_block
  1012.                      {multiple_blocks}
  1013.  
  1014.           init_of_proc_block:
  1015.              (1) init_block
  1016.                      initial_line
  1017.                      brentbas_block
  1018.                      initend_line
  1019.              (2) procedure_block
  1020.                      procedure_line]
  1021.                      brentbas_block
  1022.                      pend_line]
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.      Copyright 1985 By Brent D. Weaver                          Page 16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.                         The Brentbas User's Manual                    
  1060.  
  1061.  
  1062.           brentbas_block:
  1063.              (1)
  1064.                      {brentbas_block}
  1065.                      normal_line
  1066.                      {brentbas_block}
  1067.              (2) if_block
  1068.                  (a)
  1069.                      then_line
  1070.                      brentbas_block
  1071.                      ifend_line
  1072.                  (b)
  1073.                      then_line
  1074.                      brentbas_block
  1075.                      else_block
  1076.                      brentbas_block
  1077.                      ifend_line
  1078.              (3) case_block
  1079.                  (a)
  1080.                      case_line
  1081.                      selection_block
  1082.                      cend_line
  1083.                  (b)
  1084.                      case_line
  1085.                      selection_block
  1086.                      otherwise_line
  1087.                      brentbas_block
  1088.                                cend_line
  1089.              (4) do_block
  1090.                  (a)
  1091.                      do_line
  1092.                      brentbas_block
  1093.                      enddo_line
  1094.                  (b)
  1095.                      do_line
  1096.                      brentbas_block
  1097.                      break_continue_line
  1098.                      brentbas_block
  1099.                      enddo_line
  1100.  
  1101.  
  1102.           normal_line:
  1103.              (1) basic_line
  1104.              (2) blank_line
  1105.              (3) call_line
  1106.                 (a) {basic_line :} name{(expresion_list)}]
  1107.                 (b) {basic_line :} IF logical_expression name{(expresion_list)}]
  1108.              (4) goto_line
  1109.                 (a) {basic_line :} GOTO(name)]
  1110.                 (b) {basic_line :} IF logical_expression GOTO(name)]
  1111.              (5) include_line
  1112.                     INCLUDE "file_spec"]
  1113.              (6) label_line
  1114.                     LABEL name
  1115.              (7) resume_line
  1116.                 (a) {basic_line :} RESUME(name)]
  1117.                 (b) {basic_line :} IF logical_expression RESUME(name)]
  1118.  
  1119.  
  1120.      Copyright 1985 By Brent D. Weaver                          Page 17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.                         The Brentbas User's Manual                    
  1126.  
  1127.  
  1128.           then_line:
  1129.              (1)     {basic_line:} IF logical_expression then BEGIN]
  1130.              (2)     {basic_line:} IF logical_expression THEN]
  1131.  
  1132.  
  1133.           break_continue_line:
  1134.              (1)     {basic_line:} BREAK]
  1135.              (2)     {basic_line:} IF logical_expression BREAK]
  1136.              (3)     {basic_line:} CONTINUE]
  1137.              (4)     {basic_line:} IF logical_expression CONTINUE]
  1138.  
  1139.  
  1140.           cend_line:
  1141.                      CEND]
  1142.                      ENDCASE]
  1143.  
  1144.  
  1145.           do_line:
  1146.              (1)     {basic_line:} FOR variable=expression TO expression DO]
  1147.              (2)     {basic_line:} WHILE logical_expression DO]
  1148.  
  1149.  
  1150.           else_line:
  1151.                      {basic_line :} ELSE]
  1152.  
  1153.           enddo_line:
  1154.                      {basic_line :} DOEND]
  1155.                      {basic_line :} ENDDO]
  1156.  
  1157.  
  1158.           ifend_line:
  1159.              (1)     {basic_line :} ENDIF]
  1160.              (2)     {basic_line :} IFEND]
  1161.  
  1162.           initial_line:
  1163.                      INITIAL]
  1164.  
  1165.           initend_line:
  1166.                      INITEND]
  1167.  
  1168.  
  1169.           case_line:
  1170.                      {basic_line:} CASE expression OF]
  1171.  
  1172.           otherwise_line:
  1173.                      OTHERWISE]
  1174.  
  1175.           pend_line:
  1176.                      PEND]
  1177.  
  1178.  
  1179.           procedure_line:
  1180.                      PROCEDURE name{(variable_list)}]
  1181.  
  1182.           program_line:
  1183.                      PROGRAM]
  1184.  
  1185.  
  1186.      Copyright 1985 By Brent D. Weaver                          Page 18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.                         The Brentbas User's Manual                    
  1192.  
  1193.  
  1194.           selection_line:
  1195.                      expression_list :]
  1196.           expresion_list:
  1197.               (1)    see BASIC manual
  1198.               (2)    expression{, expression_list}
  1199.           basic_line:
  1200.                      basic_statement {: basic_line}
  1201.           basic_statement:
  1202.                      See BASIC manual
  1203.           name:
  1204.                      string of characters not including " , : ] ( ) '
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.      Copyright 1985 By Brent D. Weaver                          Page 19
  1253.  
  1254.  
  1255.  
  1256.  
  1257.                         The Brentbas User's Manual                    
  1258.  
  1259.  
  1260.                             14.  Error Messages
  1261.  
  1262.  
  1263.      "Missing PEND]"
  1264.  
  1265.              Each  PROCEDURE  statement  must  be  followed by a PEND]
  1266.              statement before another PROCEDURE or  INITIAL  statement
  1267.              is found.
  1268.  
  1269.      "... not in procedure list"
  1270.  
  1271.              The procedure must be declared before being called.
  1272.  
  1273.      "arguments do not match "
  1274.  
  1275.              The  call  of  a  procedure  must have the same number of
  1276.              arguments as were declared in the PROCEDURE statement.
  1277.  
  1278.  
  1279.      "Out of Memory"
  1280.  
  1281.              Too many of the following statements  were  used:  proce-
  1282.              dure, label, goto, break, continue, case.
  1283.  
  1284.  
  1285.      "label ... in ... was not found"
  1286.  
  1287.              A  goto  statement could not be matched to a LABEL state-
  1288.              ment.
  1289.  
  1290.  
  1291.      "Unmatched ELSE]"
  1292.  
  1293.              An ELSE statement could not  be  matched  to  a  IF..THEN
  1294.              statement.
  1295.  
  1296.  
  1297.      "Unmatched IFEND]"
  1298.  
  1299.              An  ELSE  statement  could  not  be matched to a IF..THEN
  1300.              statement.
  1301.  
  1302.  
  1303.      "DO statement must begin with FOR or WHILE".
  1304.  
  1305.  
  1306.      "Unmatched ENDDO]".
  1307.  
  1308.              The ENDDO statement could not be matched to a  DO  state-
  1309.              ment.
  1310.  
  1311.  
  1312.      "Extra PEND]"A PEND statement could not be matched to a PROCEDURE
  1313.              statement.
  1314.  
  1315.  
  1316.  
  1317.  
  1318.      Copyright 1985 By Brent D. Weaver                          Page 20
  1319.  
  1320.  
  1321.  
  1322.  
  1323.                         The Brentbas User's Manual                    
  1324.  
  1325.  
  1326.      "Unmatched statements in Procedure"
  1327.  
  1328.              The  procedure was missing a IFEND, CEND, or ENDDO state-
  1329.              ment.
  1330.  
  1331.  
  1332.      "BREAK statement without matching ENDDO"
  1333.  
  1334.              A BREAK statement was found outside a DO...ENDO loop.
  1335.  
  1336.  
  1337.      "CONTINUE statement without matching ENDDO"
  1338.  
  1339.              A CONTINUE statement was found outside a DO...ENDO loop.
  1340.  
  1341.  
  1342.      "Statement should be CASE...OF] "
  1343.  
  1344.              An OF statement did not start with the word "CASE".
  1345.  
  1346.  
  1347.      "SELECTION line without preceding CASE...OF"
  1348.  
  1349.              "Missing Expression in Case Selection "
  1350.  
  1351.  
  1352.      "Unmatched IF] or CASE...OF] in SELECTION"
  1353.  
  1354.              A IFEND or CEND statement was missing within a selection.
  1355.  
  1356.  
  1357.      "Unmatched IF] or CASE] in CASE...OF ...CEND] construction"
  1358.  
  1359.              A IFEND or CEND statement was missing  within  a  "other-
  1360.              wise" section.
  1361.  
  1362.  
  1363.      "Unmatched CEND] statement"
  1364.  
  1365.              A  CEND  statement  could  not be matched with a CASE..OF
  1366.              statement.
  1367.  
  1368.  
  1369.      "Includes nested too deep"
  1370.  
  1371.  
  1372.      "... open error"
  1373.  
  1374.              An include file could not be  opened.  Usually  file  not
  1375.              found error.
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.      Copyright 1985 By Brent D. Weaver                          Page 21
  1385.  
  1386.  
  1387.